summaryrefslogtreecommitdiff
path: root/app/[lng]
diff options
context:
space:
mode:
Diffstat (limited to 'app/[lng]')
-rw-r--r--app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx95
-rw-r--r--app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/im/[formCode]/page.tsx95
-rw-r--r--app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/page.tsx37
-rw-r--r--app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx18
4 files changed, 14 insertions, 231 deletions
diff --git a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx b/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx
deleted file mode 100644
index 351fbca3..00000000
--- a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx
+++ /dev/null
@@ -1,95 +0,0 @@
-// app/[lng]/partners/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx
-import DynamicTable from "@/components/form-data-plant/form-data-table";
-import { getFormData, getFormId,getProjectIdByCode } from "@/lib/forms-plant/services";
-import { useTranslation } from "@/i18n";
-import { Skeleton } from "@/components/ui/skeleton";
-
-interface EngineeringFormPageProps {
- params: {
- lng: string;
- projectCode: string;
- packageCode: string;
- formCode: string;
- };
- searchParams?: {
- mode?: string;
- };
-}
-
-export default async function EngineeringFormPage({
- params,
- searchParams,
-}: EngineeringFormPageProps) {
- // 1) 구조 분해 할당
- const resolvedParams = await params;
-
- // 2) searchParams도 await 필요
- const resolvedSearchParams = await searchParams;
-
- // 3) 구조 분해 할당
- const { lng, projectCode, packageCode, formCode } = resolvedParams;
-
- // i18n 설정
- const { t } = await useTranslation(lng, 'engineering');
-
- // URL 쿼리 파라미터에서 mode 가져오기 (await 해서 사용)
- const mode = "ENG"; // 기본값은 IM
-
- // 4) DB 조회 - projectCode와 packageCode를 전달
- const { columns, data, editableFieldsMap } = await getFormData(
- formCode,
- projectCode,
- packageCode
- );
-
- // 5) formId 조회 - projectCode와 packageCode를 전달
- const { formId } = await getFormId(projectCode, packageCode, formCode, mode);
-
- const projectId = await getProjectIdByCode(projectCode)
-
- // 6) 예외 처리
- if (!columns) {
- return (
- <p className="text-red-500">
- {t('errors.form_meta_not_found')}
- </p>
- );
- }
-
- // 7) 렌더링
- return (
- <div className="space-y-4">
- <div className="flex items-center justify-between">
- <div>
- <h3 className="text-lg font-semibold">Engineering Form</h3>
- <p className="text-sm text-muted-foreground">
- Project: {projectCode} / Package: {packageCode} / Form: {formCode}
- </p>
- </div>
- </div>
-
- <div className="space-y-6">
- <DynamicTable
- projectId={projectId}
- projectCode={projectCode}
- packageCode={packageCode}
- formCode={formCode}
- formId={formId}
- columnsJSON={columns}
- dataJSON={data}
- editableFieldsMap={editableFieldsMap}
- mode={"ENG"}
- />
- </div>
- </div>
- );
-}
-
-function TableSkeleton() {
- return (
- <div className="space-y-4">
- <Skeleton className="h-10 w-full" />
- <Skeleton className="h-[400px] w-full" />
- </div>
- );
-} \ No newline at end of file
diff --git a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/im/[formCode]/page.tsx b/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/im/[formCode]/page.tsx
deleted file mode 100644
index 29188061..00000000
--- a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/im/[formCode]/page.tsx
+++ /dev/null
@@ -1,95 +0,0 @@
-// app/[lng]/partners/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx
-import DynamicTable from "@/components/form-data-plant/form-data-table";
-import { getFormData, getFormId, getProjectIdByCode } from "@/lib/forms-plant/services";
-import { useTranslation } from "@/i18n";
-import { Skeleton } from "@/components/ui/skeleton";
-
-interface EngineeringFormPageProps {
- params: {
- lng: string;
- projectCode: string;
- packageCode: string;
- formCode: string;
- };
- searchParams?: {
- mode?: string;
- };
-}
-
-export default async function IMFormPage({
- params,
- searchParams,
-}: EngineeringFormPageProps) {
- // 1) 구조 분해 할당
- const resolvedParams = await params;
-
- // 2) searchParams도 await 필요
- const resolvedSearchParams = await searchParams;
-
- // 3) 구조 분해 할당
- const { lng, projectCode, packageCode, formCode } = resolvedParams;
-
- // i18n 설정
- const { t } = await useTranslation(lng, 'engineering');
-
- // URL 쿼리 파라미터에서 mode 가져오기 (await 해서 사용)
- const mode = "IM"; // 기본값은 IM
-
- // 4) DB 조회 - projectCode와 packageCode를 전달
- const { columns, data, editableFieldsMap } = await getFormData(
- formCode,
- projectCode,
- packageCode
- );
-
- // 5) formId 조회 - projectCode와 packageCode를 전달
- const { formId } = await getFormId(projectCode, packageCode, formCode, mode);
-
- const projectId = await getProjectIdByCode(projectCode)
-
- // 6) 예외 처리
- if (!columns) {
- return (
- <p className="text-red-500">
- {t('errors.form_meta_not_found')}
- </p>
- );
- }
-
- // 7) 렌더링
- return (
- <div className="space-y-4">
- <div className="flex items-center justify-between">
- <div>
- <h3 className="text-lg font-semibold">Engineering Form</h3>
- <p className="text-sm text-muted-foreground">
- Project: {projectCode} / Package: {packageCode} / Form: {formCode}
- </p>
- </div>
- </div>
-
- <div className="space-y-6">
- <DynamicTable
- projectId={projectId}
- projectCode={projectCode}
- packageCode={packageCode}
- formCode={formCode}
- formId={formId}
- columnsJSON={columns}
- dataJSON={data}
- editableFieldsMap={editableFieldsMap}
- mode={"IM"}
- />
- </div>
- </div>
- );
-}
-
-function TableSkeleton() {
- return (
- <div className="space-y-4">
- <Skeleton className="h-10 w-full" />
- <Skeleton className="h-[400px] w-full" />
- </div>
- );
-} \ No newline at end of file
diff --git a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/page.tsx b/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/page.tsx
deleted file mode 100644
index 4904a8ff..00000000
--- a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/page.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-// app/[lng]/partners/vendor-data-plant/[projectCode]/[packageCode]/page.tsx
-
-import { TagsTable } from "@/lib/tags-plant/table/tag-table"
-
-interface MasterTagListPageProps {
- params: Promise<{
- lng: string
- projectCode: string
- packageCode: string
- }>
-}
-
-export default async function MasterTagListPage({
- params,
-}: MasterTagListPageProps) {
- const { projectCode, packageCode } = await params
-
- return (
- <div className="space-y-4">
- <div className="flex items-center justify-between">
- <div>
- <h3 className="text-lg font-semibold">Master Tag List</h3>
- <p className="text-sm text-muted-foreground">
- Project: {projectCode} / Package: {packageCode}
- </p>
- </div>
- </div>
-
- {/* 완전 클라이언트 컴포넌트 */}
- <TagsTable
- projectCode={projectCode}
- packageCode={packageCode}
- formCode="MASTER"
- />
- </div>
- )
-} \ No newline at end of file
diff --git a/app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx b/app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx
index 792a3a6a..8a9c43e9 100644
--- a/app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx
+++ b/app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx
@@ -2,35 +2,41 @@
import * as React from "react"
import { cookies } from "next/headers"
import { Shell } from "@/components/shell"
+import { getVendorProjectsAndContracts } from "@/lib/vendor-data-plant/services"
import { VendorDataContainer } from "@/components/vendor-data-plant/vendor-data-container"
import { authOptions } from "@/app/api/auth/[...nextauth]/route"
import { getServerSession } from "next-auth"
import { InformationButton } from "@/components/information/information-button"
import { useTranslation } from "@/i18n"
-import { getVendorProjectsWithPackages } from "@/lib/vendor-data/services"
interface VendorDataLayoutProps {
children: React.ReactNode
params: { lng?: string }
}
+// Layout 컴포넌트는 서버 컴포넌트입니다
export default async function VendorDataLayout({
children,
params,
}: VendorDataLayoutProps) {
- const { lng } = await params
+ // 기본 언어는 'ko'로 설정, params.locale이 있으면 사용
+ const { lng } = await params;
const language = lng || 'en'
const { t } = await useTranslation(language, 'engineering')
const session = await getServerSession(authOptions)
const vendorId = session?.user.companyId
+ // const vendorId = "17"
const idAsNumber = Number(vendorId)
- // 프로젝트 및 패키지 데이터 가져오기
- const projects = await getVendorProjectsWithPackages(idAsNumber, "plant")
+ // 프로젝트 데이터 가져오기 (type=plant만)
+ const projects = await getVendorProjectsAndContracts(idAsNumber, "plant")
// 레이아웃 설정 쿠키 가져오기
+ // Next.js 15에서는 cookies()가 Promise를 반환하므로 await 사용
const cookieStore = await cookies()
+
+ // 이제 cookieStore.get() 메서드 사용 가능
const layout = cookieStore.get("react-resizable-panels:layout:mail")
const collapsed = cookieStore.get("react-resizable-panels:collapsed")
@@ -48,6 +54,9 @@ export default async function VendorDataLayout({
</h2>
<InformationButton pagePath="partners/vendor-data-plant" />
</div>
+ {/* <p className="text-muted-foreground">
+ 각종 Data 입력할 수 있습니다
+ </p> */}
</div>
</div>
</div>
@@ -65,6 +74,7 @@ export default async function VendorDataLayout({
defaultCollapsed={defaultCollapsed}
navCollapsedSize={4}
>
+ {/* 페이지별 콘텐츠가 여기에 들어갑니다 */}
{children}
</VendorDataContainer>
)}